package gamedo

// 每个玩家可以有多个角色，至少会有一个角色
// 角色可以作为队长存在，例如卡牌游戏，没有具体的单位（英雄、卡片等）
// 角色也可以设置[主控单位]，作为角色在游戏场景中的映射，例如魔兽争霸中操纵的主要单位
// 所有
// @schema_export --ident=schema --json
// @schema_go
// @schema_ts
// @cache_go
// @alias D角色
type D角色 struct {
	// @alias _id
	B编号 string `alias:"_id"`
	// 作为分表键，同一个玩家的数据应该散列到同在一个库
	// @alias 玩家
	W玩家 string `alias:"玩家" dlink:"玩家"`
	// 用户字段不会变化，增加用户字段的冗余方便查找
	// @alias 用户
	Y用户 string `alias:"用户" dlink:"用户"`
	// @alias 游戏服
	Y游戏服 string `alias:"游戏服" dlink:"游戏服"`
	// @alias 公会
	G公会 string `alias:"公会" dlink:"公会"`
	// 角色的配置
	// @alias 配置
	P配置 string `alias:"配置" dlink:"角色配置"`
	// @alias 头像
	T头像 string `alias:"头像"`
	// @alias 登陆时间
	// 单位:秒
	D登陆时间 int `alias:"登陆时间"`
	// 单位:秒
	// @alias 离线时间
	L离线时间 int `alias:"离线时间"`
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 等级
	D等级 int `alias:"等级"`
	// @alias 经验
	J经验 int `alias:"经验"`
	// 角色的动态属性
	// @alias 属性
	S属性 map[string]float64 `alias:"属性"`
	// @alias 资源
	Z资源 map[string]int `alias:"资源"`
	// 用于出战、阵型等
	// 模板编号->模板数据
	// @alias 卡包模板
	M卡包模板 map[string]*S卡包模板数据 `alias:"卡包模板"`
	// 模板组合编号->模板数据组合
	// @alias 卡包模板组合
	M卡包模板组合 map[string]*S卡包模板组合 `alias:"卡包模板组合"`
	// 标识->卡包数据
	// @alias 卡包集
	B卡包集 map[string]*S卡包数据 `alias:"卡包集"`

	// 标识->S充能数据
	// @alias 充能集
	C充能集 map[string]*S充能数据 `alias:"充能集"`
	// 标识->S冷却数据
	// @alias 冷却集
	L冷却集 map[string]*S冷却数据 `alias:"冷却集"`
	// @alias 增益集
	Z增益集 map[string]*S增益数据 `alias:"增益集"`

	// @alias 功能集
	G功能集 map[string]*S功能数据 `alias:"功能集"`
	// 商店配置->商店数据
	// @alias 商店集
	S商店集 map[string]*S商店数据 `alias:"商店集"`
	// 商品配置->商品数据
	// @alias 商品集
	S商品集 map[string]*S商品数据 `alias:"商品集"`
	// @alias 任务集
	R任务集 map[string]*S任务数据 `alias:"任务集"`
	// 统计所在对象编号->统计数据
	// @alias 统计集
	T统计集 map[string]*S统计数据 `alias:"统计集"`
	// 副本配置->副本数据
	// @alias 副本集
	F副本集 map[string]*S副本数据 `alias:"统计集"`
	// 科技配置编号->科技数据
	// @alias 科技集
	K科技集 map[string]*S科技数据 `alias:"科技集"`

	// 最后更新系务的时间
	// @alias 系务时间戳
	X系务时间戳 int `alias:"系务时间戳"`
	// 卡片编号->卡片数据
	// @alias 卡片库
	K卡片库 map[string]*S卡片数据 `alias:"卡片库"`
	// 未领取标识->数据
	// @alias 未领取库
	W未领取库 map[string]*S未领取数据 `alias:"未领取库"`
	// @alias 更新时间
	G更新时间 int `alias:"更新时间"`
	// 创建时间也就是注册时间
	// @alias 创建时间
	C创建时间 int `alias:"创建时间"`
}

type S未领取数据 struct {
	// @alias 奖励列表
	J奖励列表 []*S未领取项 `alias:"奖励列表"`
	// @alias 更新时间
	G更新时间 int `alias:"更新时间"`
}

type S未领取项 struct {
	// @alias 资源
	Z资源 string `alias:"资源"`
	// @alias 卡片
	K卡片 string `alias:"卡片"`
	// @alias 数量
	S数量 int `alias:"数量"`
	// @alias 属性
	S属性 map[string]int `alias:"属性"`
}
